` ).join(""); return t ? `
${r}` : r; }, }, }, flagEnabled: s.U5, codec: { encode: s.hD, decode: s.P_ }, }), inUse: !1, }), f.push(t)) : ((0, s.U5)("rewriterLogs", e.base) && console.log( `using cached rewriter ${r} from list of ${d} rewriters` ), (t = f[r])), (t.inUse = !0), [t.rewriter, () => (t.inUse = !1)] ); } }, 2015: function (e, t, r) { r.d(t, { i: () => s }); var n = r(37), i = r(1478); function s(e, t, r, s) { let o = "", a = "module" === t, l = (e) => { a ? (o += `import "${n.$W.files[e]}" `) : (o += `importScripts("${n.$W.files[e]}"); `); }; l("wasm"), l("all"), (o += `$scramjetLoadClient().loadAndHook(${JSON.stringify( n.$W )});`); let c = (0, i.o)(e, r, s, a); return ( c instanceof Uint8Array && (c = new TextDecoder().decode(c)), (o += c) ); } }, 6684: function (e, t, r) { r.d(t, { Sn: () => d, YH: () => c, Yq: () => p, hU: () => u, pL: () => h, rj: () => l, }); let n = { none: 0, "same-origin": 1, "same-site": 2, "cross-site": 3 }; async function i() { let e = indexedDB.open("$scramjet", 1); return new Promise((t, r) => { (e.onerror = () => r(e.error)), (e.onsuccess = () => t(e.result)); }); } async function s(e) { let t = (await i()) .transaction("redirectTrackers", "readonly") .objectStore("redirectTrackers"); return new Promise((r) => { let n = t.get(e); (n.onsuccess = () => r(n.result || null)), (n.onerror = () => r(null)); }); } async function o(e, t) { let r = (await i()) .transaction("redirectTrackers", "readwrite") .objectStore("redirectTrackers"); return new Promise((n, i) => { let s = r.put(t, e); (s.onsuccess = () => n()), (s.onerror = () => i(s.error)); }); } async function a(e) { let t = (await i()) .transaction("redirectTrackers", "readwrite") .objectStore("redirectTrackers"); return new Promise((r, n) => { let i = t.delete(e); (i.onsuccess = () => r()), (i.onerror = () => n(i.error)); }); } async function l(e, t, r) { (await s(e)) || (await o(e, { originalReferrer: t || "", mostRestrictiveSite: r, referrerPolicy: "", chainStarted: Date.now(), })); } async function c(e, t, r) { let n = await s(e); n && (await a(e), r && (n.referrerPolicy = r), await o(t, n)); } async function u(e, t) { let r = await s(e); if (!r) return t; let i = n[r.mostRestrictiveSite]; return (n[t] ?? 0) > i ? ((r.mostRestrictiveSite = t), await o(e, r), t) : r.mostRestrictiveSite; } async function d(e) { await a(e); } async function h(e, t, r) { let n = (await i()) .transaction("referrerPolicies", "readwrite") .objectStore("referrerPolicies"), s = { policy: t, referrer: r }; return new Promise((t, r) => { let i = n.put(s, e); (i.onsuccess = () => t()), (i.onerror = () => r(i.error)); }); } async function p(e) { let t = (await i()) .transaction("referrerPolicies", "readonly") .objectStore("referrerPolicies"); return new Promise((r) => { let n = t.get(e); (n.onsuccess = () => r(n.result || null)), (n.onerror = () => r(null)); }); } }, 8228: function (e, t, r) { r.d(t, { ps: () => a }); let n = "publicSuffixList"; async function i() { let e = indexedDB.open("$scramjet", 1); return new Promise((t, r) => { (e.onerror = () => r(e.error)), (e.onsuccess = () => t(e.result)); }); } async function s() { let e = (await i()).transaction(n, "readonly").objectStore(n); return new Promise((t) => { let r = e.get(n); (r.onsuccess = () => t(r.result || null)), (r.onerror = () => t(null)); }); } async function o(e) { let t = (await i()) .transaction("publicSuffixList", "readwrite") .objectStore("publicSuffixList"); return new Promise((r, i) => { let s = t.put({ data: e, expiry: Date.now() + 36e5 }, n); (s.onsuccess = () => r()), (s.onerror = () => i(s.error)); }); } async function a(e, t, r) { return t ? e.origin.origin === t.origin ? "same-origin" : (await l(e.origin, t, r)) ? "same-site" : "cross-site" : "none"; } async function l(e, t, r) { return (await c(e, r)) === (await c(t, r)); } async function c(e, t) { let r = await u(t), n = e.hostname.toLowerCase().split("."), i = "", s = !1; for (let e of r) { let t = e.startsWith("!") ? e.substring(1) : e; if ( (function (e, t) { if (e.length < t.length) return !1; let r = e.length - t.length; for (let n = 0; n < t.length; n++) { let i = e[r + n], s = t[n]; if ("*" !== s && i !== s) return !1; } return !0; })(n, t.split(".")) ) { if (e.startsWith("!")) { (i = t), (s = !0); break; } !s && t.length > i.length && (i = t); } } if (!i) return n.slice(-2).join("."); let o = i.split(".").length, a = s ? o : o + 1; return n.slice(-a).join("."); } async function u(e) { let t, r = await s(); if (r && Date.now() < r.expiry) return r.data; try { t = await e.fetch( "https://publicsuffix.org/list/public_suffix_list.dat" ); } catch (e) { throw Error(`Failed to fetch public suffix list: ${e}`); } let n = (await t.text()) .split("\n") .map((e) => { let t = e.trim(), r = t.indexOf(" "); return r > -1 ? t.substring(0, r) : t; }) .filter((e) => e && !e.startsWith("//")); return await o(n), n; } }, 2794: function (e, t, r) { r.d(t, { pX: () => n, zr: () => i }); let n = Symbol.for("scramjet client global"), i = Symbol.for("scramjet frame handle"); }, 5956: function (e, t, r) { function n(e, t) { let r = ` errorTrace.value = ${JSON.stringify(e)}; fetchedURL.textContent = ${JSON.stringify(t)}; for (const node of document.querySelectorAll("#hostname")) node.textContent = ${JSON.stringify( location.hostname )}; reload.addEventListener("click", () => location.reload()); version.textContent = ${JSON.stringify( $scramjetVersion.version )}; build.textContent = ${JSON.stringify($scramjetVersion.build)}; document.getElementById('copy-button').addEventListener('click', async () => { const text = document.getElementById('errorTrace').value; await navigator.clipboard.writeText(text); const btn = document.getElementById('copy-button'); btn.textContent = 'Copied!'; setTimeout(() => btn.textContent = 'Copy', 2000); }); `; return `There was an error loading
Try:
If you're the owner of , try:
Scramjet v (build )